class Solution {
  public:
//     bool Find(int val, vector<vector<int> > array) {
//         int row = array.size();
//         int col = array[0].size();
//         bool find = false;
//         for (int i = 0; i < row; ++i) {
//             for (int j = 0; j < col; ++j) {
//                 if(val == array[i][j]) return true;
//             }
//         }
//         return false;
//     }
    // 将暴力搜索中的顺序查找改为二分查找
    // 观察数字之间的关系，一个数字一定比他左边和上边的大；遍历过程不要出现岔路口
    bool Find(int val, vector<vector<int> > array) {
        int row = array.size();
        int col = array[0].size();
        for (int i = row - 1; i >= 0; --i) {
            for (int j = 0; j < col; ++j) {
                if(val == array[i][j]) return true;
                if(val < array[i][j]) break;
                // else val > array[i][j]
            }
        }
        return false;
    }

};